package io.renren.modules.medical.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import io.renren.common.utils.ArabicToChineseConverterUtil;
import io.renren.common.utils.PageUtils;
import io.renren.modules.medical.dao.QuestionnaireSurveyDao;
import io.renren.modules.medical.entity.QuestionnaireSurveyEntity;
import io.renren.modules.medical.service.QuestionnaireSurveyService;
import io.renren.modules.medical.vo.medicalVo.QuestionnaireListVo;
import io.renren.modules.medical.vo.weixinVo.ApiQuestionnaireListVo;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.stream.Collectors;


@Service("questionnaireSurveyService")
public class QuestionnaireSurveyServiceImpl extends ServiceImpl<QuestionnaireSurveyDao, QuestionnaireSurveyEntity> implements QuestionnaireSurveyService {

    @Override
    public PageUtils queryPage(Map<String, Object> params) {
        String key = (String) params.get("key");
        if (StringUtils.isEmpty(key)){
            key = null;
        }
        int limit = Integer.parseInt((String) params.get("limit"));
        int page = Integer.parseInt((String) params.get("page"));
        // 1、先找到list集合
        List<QuestionnaireListVo> questionnaireList = baseMapper.queryDistinctPage(key, limit, (page-1) * limit);

        // 2、查询到总条数
        Integer count = baseMapper.count(key);

        // 3、返回page对象
        return new PageUtils(questionnaireList, count, limit, page);
    }

    @Override
    public List<ApiQuestionnaireListVo> historyList(Long patientInfoId) {
        if (patientInfoId.equals(-1L)){
            // 动态获取
            patientInfoId = 6L;
        }
        LambdaQueryWrapper<QuestionnaireSurveyEntity> wrapper = new LambdaQueryWrapper<>();
        wrapper.eq(QuestionnaireSurveyEntity::getPatientInfoId, patientInfoId);
        wrapper.orderByAsc(QuestionnaireSurveyEntity::getCreateTime);
        List<QuestionnaireSurveyEntity> questionnaireListVoList = this.list(wrapper);
        if (questionnaireListVoList == null || questionnaireListVoList.size() <= 0){
            return null;
        }
        AtomicInteger count = new AtomicInteger(1);
        List<ApiQuestionnaireListVo> resultList = questionnaireListVoList.stream().map(item -> {
            ApiQuestionnaireListVo apiQuestionnaireListVo = new ApiQuestionnaireListVo();
            BeanUtils.copyProperties(item, apiQuestionnaireListVo);
            apiQuestionnaireListVo.setTitle('第' + ArabicToChineseConverterUtil.convertToChinese(count.get()) + "次评估");
            count.getAndIncrement();
            return apiQuestionnaireListVo;
        }).collect(Collectors.toList());
        return resultList;
    }

}